<?

/*
*
*   Excalibur Content Management System
*   Copyright © 2008 Egor "Sontan" Kuryanovich
*
*   Based on Explay Engine v2.0 by Golovdinov Alexander
*
*   Official site: www.excms.ru
*   Contact e-mail: support@excms.ru
*
*   GNU General Public License original source:
*   http://www.gnu.org/licenses/gpl-3.0.html
*
*/

/*error_reporting (E_ALL);
ini_set ("display_errors",1);*/

function past_articles ($module = "articles", $author = 0) 
{
	global $db, $template, $GLOBAL_USER, $SITE, $theme, $art_options;
	
	$number = $SITE['site_arts'];
	$start = 0;
	if (isset($_GET['page']) && $_GET['page'] != "0" && is_numeric($_GET['page'])) $start = (intval ($_GET['page']) - 1) * $number;

	$order = 'art_id';

	$option = '';
	$searchfor = '';
	$mod = array();
	// По умолчанию загружает только одобреные статьи
	$vis = " AND art_visible = 'on' ";

	// Если выборка идет по статьям определенного пользователя
	if (isset ($_GET['user']) && is_numeric($_GET['user'])) 
	{
		// Добавляем в запрос условие
		$option .= " art_author = '".intval($_GET['user'])."' AND ";
		// Снимаем флаг отображения одобреных статей
		$vis = '';
		// Добавляем к строке запроса
		$mod[] = "user=".intval($_GET['user'])."";
	}

	// Если закладка мои статьи
	if ($author != 0) 
	{
		$option .= " art_author = '$author' AND ";
		$vis = '';
	}

	if (isset ($_GET['cat'])) 
	{
		// Если выборка идет по определенной категории
		if ($_GET['cat'] != "all")
		{
			// Добавляем в запрос условие
			$option .= "art_category = '".addslashes (substr ($_GET['cat'], 0, 30))."' AND ";
		}

		// Если просматриваются все статьи то 
		if ($_GET['cat'] == "all")
		{
			// Выводим стандартный бар вверху страницы
			print $template->display ("articles/bar_all.tpl");
		}

		// Добавляем в строку запроса
		$_url .= addslashes (substr ($_GET['cat'], 0, 30)).'/';
	}
	
	// Если поиск по тэгу
	if (isset($_GET['tagname'])) 
	{
		// Выводим форму поиска по тэгу
		print '<div id="tag_search">
				<form method="get" action="/articles/">
					<img src="/themes/'.$theme.'/images/cloud.gif" /> 
					<input type="text" name="tagname" id="tagname" value="'.$_GET['tagname'].'" />
				</form>
				</div>';
				
		$tagname = addslashes (trim ($_GET['tagname']));
		$tagname = substr ($tagname, 0, 30);

		// Если тэг не пустой
		if ($tagname != '') 
		{
			// Добавляем в запрос условие
			$option .= "art_tags LIKE '%{$tagname}%' AND "; 
			// Добавляем в строку запроса			
			$mod[] = "tagname=$tagname"; 
		}
		else 
			site_error ('Какой тег искать? Может вам <a href="/articles/mod_tags/">облаками</a> нравится?');
	}
	
	// Если текстовый поиск
	if (isset($_GET['search'])) 
	{
		// Выводим форму поиска по тэгу
		print '<div id="tag_search">
				<form method="get" action="/articles/">
					<img src="/themes/'.$theme.'/images/cloud.gif" /> 
					<input type="text" name="search" id="tagname" value="'.$_GET['search'].'" />
				</form>
				</div>';
				
		$searchfor = addslashes (trim ($_GET['search']));

		// Если тэг не пустой
		if ($searchfor != '' && mb_strlen($searchfor)>2) 
		{
			// Добавляем в запрос условие
			$option .= "(art_body LIKE '%{$searchfor}%' OR art_header LIKE '%{$searchfor}%')AND "; 
			// Добавляем в строку запроса			
			$mod[] = "search=$searchfor"; 
		}
		else
		{
			$searchfor = '';
			site_error ('Неверный запрос!');
			return;
		}
	}	
	
	if ($option == '' && $_GET['cat'] != 'all' && !isset($_GET['user'])) 
	{
		// Выводим бар главной страницы
		print $template->display ('articles/bar_mainpage.tpl');
		// Добавляем условия в запрос
		$option .= "art_publik = 'yes' AND art_rating > -3 AND ";
	}

/*	$gart = "SELECT a.*, u.user_name,  ct.cat_header, ct.cat_description, ct.cat_users, ct.cat_rating, ct.cat_id  
	FROM ".DB_PEREFIX."_articles AS a, ".DB_PEREFIX."_art_category AS ct, ".DB_PEREFIX."_users AS u 
	WHERE a.art_category = ct.cat_name AND a.art_author = u.user_id AND $option art_like_page = 'no' $vis ORDER BY $order DESC LIMIT $start, $number";*/


	$gart = "SELECT a.*, u.user_name,  ct.cat_header, ct.cat_description, ct.cat_users, ct.cat_rating, ct.cat_id  
	FROM ".DB_PEREFIX."_articles AS a
	JOIN ".DB_PEREFIX."_users AS u ON (a.art_author = u.user_id)
	LEFT JOIN ".DB_PEREFIX."_art_category AS ct ON (a.art_category = ct.cat_name)
	WHERE $option art_like_page = 'no' $vis ORDER BY $order DESC LIMIT $start, $number";

	
	$get_art = $db->query ($gart);
	if ($db->num_rows($get_art) > 0) 
	{
		// Получаем количество статей		
		$c = $db->fetch_array($db->query ("SELECT count(*) as counter FROM ".DB_PEREFIX."_articles WHERE $option art_like_page = 'no' $vis"));
		
		$i = 1;

		$template->user_id = (isset($GLOBAL_USER['user_id'])) 
			? $GLOBAL_USER['user_id'] 
			: 0;
			
			while ($post = $db->fetch_array ($get_art)) 
			{
				
				
				// ================================================ IF BLOG
				if ($i == 1 && isset($_GET['cat']) && $_GET['cat'] != 'all') 
				{
				
					$options = '';
					if (in_blog($post['cat_id'])) 
						$options .= str_replace ('{ID}', $post['cat_id'], get_element ('{exit_blog}', '{/exit_blog}'));
					elseif (is_registered()) 
						$options .= str_replace ('{ID}', $post['cat_id'], get_element ('{join_blog}', '{/join_blog}'));
					
					
					$blog_karma = $post['cat_rating'];
					
					// Выбираем бар с кармой блога в зависимости от условий
					if (!is_registered() || my_karma() < 0 || isset($_COOKIE['blog_'.$post['art_category']])) 
						$karma_bar = $template->display ('articles/blog_karma_cant.tpl', false);
					elseif ($blog_karma >= 0) 
						$karma_bar = $template->display ('articles/blog_karma_good.tpl', false);
					else 
						$karma_bar = $template->display ('articles/blog_karma_bad.tpl', false);
			
					// Если количество читателей не задано
					($post['cat_users'] == '') 
						? $usrs = 0 
						: $usrs = $post['cat_users'];

					// Устанавливаем количество читаталей
					$template->set_var ('{BLOG_USERS}', $usrs);

					// Если существует картинка для блога то устанавливаем её
					(file_exists ('images/blogs/'.$post['art_category'].'.jpg')) 
						? $template->set_var ('{BLOG_AVATAR}', '/images/blogs/'.$post['art_category'].'.jpg') 
						: $template->set_var ('{BLOG_AVATAR}', '/images/noavatar.gif');
					
					// Устанавливаем возможные действия
					$template->set_var ('{OPTIONS}', $options);
					$template->set_var ('{BLOG_INFO}', $blog_panel);
					// Устанавливаем бар с кармой блога
					$template->set_var ('{BLOG_KARMA}', $karma_bar);
					$template->set_var ('{BLOG_KARMA_VALUE}', number_format ($blog_karma, 2, ',', ''));
					$template->set_var ('{BLOG_NAME}', $post['art_category']);
					$template->set_var ('{BLOG_HEADER}', $post['cat_header']);
					$template->set_var ('{BLOG_DESC}', $post['cat_description']);
					
					print $blog_panel = $template->display ('articles/blog_info.tpl');					
					
				}
				// ================================================ /IF BLOG


				// ================================================ IF USER
				if ($i == 1 && isset($_GET['user'])) 
				{
					past_navblock (
								array (
									array ('Профиль '.$post['user_name'], 	'/users/'.$post['art_author'].'.html', 'name', 'users'),
									array ('Публикации '.$post['user_name'], '/articles/?user='.$post['art_author'], 'user', $post['art_author']),
										)
								);
				}
				// ================================================ /IF USER
				
				// TODO: Определить количество новых комментариев
				$comments = $db->fetch_array(
									$db->query ('SELECT count(*) as count FROM '.DB_PEREFIX.'_comments 
									WHERE com_category = \'articles\' AND com_idi=\''.$post['art_id'].'\''));
			
				// Если включены автоматические переносы то переводим переносы строки в br
				if ($post['auto_tag'] == 'yes') 
					$post['art_body'] = n2br ($post['art_body']);

				// Опускаем текст после тэга cut
				$post['art_body'] = explode ('<cut>', $post['art_body']);
				
				// Если поиск то окращиваем результат
				if ($searchfor != '') 
				{
					$post['art_header'] =  preg_replace ("/$searchfor/iu",
						"<span style='background-color: rgb(255, 255, 102);'>\$0</span>", $post['art_header']);
					$post['art_body'] = preg_replace ("/$searchfor/iu",
						"<span style='background-color: rgb(255, 255, 102);'>\$0</span>", $post['art_body']);
				}

				// Если есть опущенный текст то
				($post['art_body'][1] != '') 
					? $first = $post['art_body'][0].'<br /><a href="/articles/'.$post['art_id'].'.html">читать дальше &rarr;</a>' 
					: $first = $post['art_body'][0];
				
							
				$template->set_var ('{HEADER}', $post['art_header']);
				$template->set_var ('{BLOG_NAME}', $post['art_category']);
				$template->set_var ('{BLOG_HEADER}', $post['cat_header']);
				$template->set_var ('{ART_ID}', $post['art_id']);			
				
				((is_admin() || is_moderator()) && $post['art_publik'] == 'no') 
					? $template->set_var ('{OPTIONS}', $template->display('articles/art_options.tpl', false))
					: $template->set_var ('{OPTIONS}', '');	
				
				$template->author_id = $post['art_author'];
				if ($post['cat_header'] != '')
					echo $template->display ('articles/art_header.tpl');
				else
					echo $template->display ('articles/art_header_personal.tpl');

				$template->set_var ('{RATING}', print_rating ($post['art_id'], $post['art_rating'], $post['art_author'], $post['art_voters']));				
				$template->set_var ('{BODY}', input_video (replace_symbols ($first)));
				$template->set_var ('{DATE}', format_time($post['art_date']));
				$template->set_var ('{COMMENTS}', count_smth ($comments['count'], array ('комментарий', 'комментария', 'комментариев')));
				$template->set_var ('{AUTHOR_ID}', $post['art_author']);
				$template->set_var ('{AUTHOR_NAME}', $post['user_name']);
				$template->set_var ('{TAGS}', print_tags ($post['art_tags']));
				$template->set_var ('{ART_ID}', $post['art_id']);					

				
				($image != '') 
					? $template->set_var ('{IMAGE}', 
					'<a href="/'.$post['art_image'].'" target="_blank">
						<img src="/thumbs.php?x=160&y=160&url='.$post['art_image'].'" align="left" alt="'.$post['art_header'].'">
					 </a>')
					: $template->set_var ('{IMAGE}', '');
				


				echo $template->display ('articles/article.tpl');
				
					
				$i++;
			}
			
			if ($c['counter'] > $number) 
			{
				print past_pages($start, $number, $c['counter'], "/{$module}/" . $_url, "page", $mod);
			}
		}			
		else 
		{
			site_error ('Статьи не найдены!');
		}
}


function print_tags ($tags) 
{
	$tagline = '';
	$tags = trim ($tags);
	if (substr($tags, strlen($tags)-1) == ',') $tags = substr($tags, 0, strlen($tags)-1);
	$tags = explode (',', $tags);

	for ($i=0; $i<count($tags); $i++) 
	{
		$tagline .= '<a href="/articles/?tagname='.urlencode(trim($tags[$i])).'">'.trim($tags[$i]).'</a>';
		if ($i+1 != count($tags)) $tagline .= ", ";
	}
	return $tagline;
}


function print_rating ($id, $rating, $author, $voters) {
	global $GLOBAL_USER, $SITE;
	
	$vote = false;
	$voters = explode (',', $voters);
	foreach ($voters as $v) if ($GLOBAL_USER['user_id'] == trim($v)) $vote = true;
	
	($rating == 0) ? $rating = "0 баллов" : $rating = count_smth ($rating, array ("балл", "балла", "баллов"));
	
	if ($SITE['allow_rating'] == 'yes') 
	{
		if ($rating >= 0) 
			$rating_tpl = str_replace ('{value}', $rating, get_element ("{rating_good}", "{/rating_good}"));
		else 
			$rating_tpl = str_replace ("{value}", $rating, get_element ("{rating_bad}", "{/rating_bad}"));

		if (is_registered () && my_karma() >= 0 && $GLOBAL_USER['user_id'] != $author && $vote == false) 
			$rating_tpl = str_replace ("{change}", get_element ("{change_edit}", "{/change_edit}"), $rating_tpl);
		else 
			$rating_tpl = str_replace ("{change}", get_element ("{cant_rating}", "{/cant_rating}"), $rating_tpl);

		$rating_tpl = str_replace ("{id}", $id, $rating_tpl);
		return $rating_tpl;
	}
	else return '';
}

function in_blog ($id) 
{
	global $GLOBAL_USER;

	$com = explode (",", $GLOBAL_USER['user_blogs']);

	foreach ($com as $c) if ($c == $id) return true;
	return false;
}

